package utils

import "fmt"

func ExampleFilter() {
	s := []byte("hello world")
	res := Filter(s, func(x byte) bool {
		if x == ' ' {
			return true
		}
		return false
	})
	fmt.Println(string(res))
}

func TrimSpace(s []byte) []byte {
	b := s[:0]
	for _, x := range s {
		if x != ' ' {
			b = append(b, x)
		}
	}
	return b
}
// 在本节开头的数组部分我们提到过有类似[0]int的空数组，空数组一般很少用到。
// 其实类似的根据过滤条件原地删除切片元素的算法都可以采用类似的方式处理（因为是删除操作不会出现内存不足的情形）：
func Filter(s []byte, fn func(x byte) bool) []byte {
	b := s[:0]
	for _, x := range s {
		if !fn(x) {
			b = append(b, x)
		}
	}
	return b
}

